package com.example.design.leetcode.other;

import java.util.LinkedHashMap;
import java.util.Map;

/**
 * @Description TODO
 * @date 2023/7/24 15:10
 * @Author liuzhihui
 * @Version 1.0
 */
public class Lru3 {
    int cap;
    Map<Integer, Integer> map = new LinkedHashMap<>();


    public Integer get(Integer key) {
        if (!map.containsKey(key)) {
            return -1;
        }
        makeRecentle(key);
        return map.get(key);
    }

    public void put(Integer key ,Integer val) {
        if (map.containsKey(key)) {
            makeRecentle(key);
            return;
        }

        if (map.size() >= cap) {
            Integer lastestKey = map.keySet().iterator().next();
            map.remove(lastestKey);
        }

        map.put(key,val);
    }


    private void makeRecentle(Integer key) {
        Integer value = map.get(key);
        map.remove(key);
        map.put(key, value);
    }

}
